/**
 * 添加字符串
 *
 * 牛牛手里有一个字符串A，羊羊的手里有一个字符串B，B的长度大于等于A，所以牛牛想把A串变得和B串一样长，这样羊羊就愿意和牛牛一起玩了。
 * 而且A的长度增加到和B串一样长的时候，对应的每一位相等的越多，羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2，为前两位。
 * 牛牛可以在A的开头或者结尾添加任意字符，使得长度和B一样。现在问牛牛对A串添加完字符之后，不相等的位数最少有多少位？
 *
 * 输入描述:
 * 第一行为字符串A，第二行为字符串B，A的场地小于等于B的长度，B的长度小于等于50.字符均为小写字母。
 *
 * 输出描述:
 * 输出一个整数表示A串添加完字符之后，不相等的位数最少有多少位？
 */

import java.util.Scanner;

/**
 * 枚举, 这里我们枚举nums2每一位开始的位置去寻找可以和nums1作对比, 记录出
 * 不一样的字符个数, 最后比较最小的一个, 返回出去就可以了, 因为我们是可以在
 * 前后随便配字符的, 所以为不同了字符更少, 我们配出的字符肯定是相同的, 那么
 * 我们也就只需要在已有的找出可偏移的最小不同字符个数
 * 时间复杂度 : O(n ^ 2)
 * 空间复杂度 : O(1)
 */

public  class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s1 = in.next(), s2 = in.next();
        char[] nums1 = s1.toCharArray();
        char[] nums2 = s2.toCharArray();
        int n1 = nums1.length, n2 = nums2.length;

        // 记录最小字符个数, 因为最大是 50 个字符, 所以可以用 51 来代替最大个数
        int res = 51;

        // 这里的最大是 n2 - n1, 原因是我们最多只可以配到字符个数相等, 要是继续向后走, 那我们
        // 最终配出的字符个数就远远超出最终字符个数了
        for (int i = 0; i <= n2 - n1; i++) {

            // 记录这一次有多少不同的
            int tmp = 0;

            for (int j = 0; j < n1; j++) {

                // 不相同的就加 1
                if (nums1[j] != nums2[j + i]) {
                    tmp++;
                }
            }

            // 更新最小值
            res = Math.min(tmp, res);
        }

        // 打印结果
        System.out.println(res);
    }
}